export default function getSystemInfos(){
  const version = wx.getAppBaseInfo().SDKVersion
  if (compareVersion(version, '2.20.1') >= 0) {
    return new Promise((resolve,reject) => {
      // 获取设备信息
      if (wx.canIUse('getSystemInfo')) {
        wx.getSystemInfo({
          success: (res) => {
            resolve(res)
          },
          fail: err => {
            reject(err)
          }
        })
      }else{
        resolve(getSystemInfoInstead())
      }
    })
  } else {
  }
}

/**
 * 版本号比较
 * @param {*} v1 
 * @param {*} v2 
 */
function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }
  return 0
}

/**
 * getSystemInfo接口停止维护，
 * 请使用 wx.getSystemSetting、wx.getAppAuthorizeSetting、wx.getDeviceInfo、
 * wx.getWindowInfo、wx.getAppBaseInfo 代替
 */
function getSystemInfoInstead(){
  //AppAuthorizeSetting  'authorized'/'denied'/'not determined'
  const appAuthorizeSetting = wx.getAppAuthorizeSetting()
  const newAppAuthorizeSetting = {}
  for (const key in appAuthorizeSetting) {
    if (Object.hasOwnProperty.call(appAuthorizeSetting, key)) {
      const element = appAuthorizeSetting[key];
      if (element === 'authorized') {   // 'authorized'
        newAppAuthorizeSetting[key] = true
      }else{ //'denied'/'not determined'
        newAppAuthorizeSetting[key] = false
      }
    }
  }
  return {
    errMsg: "getSystemInfo:ok",
    ...wx.getSystemSetting(),
    ...newAppAuthorizeSetting,
    ...wx.getDeviceInfo(),
    ...wx.getWindowInfo(),
    ...wx.getAppBaseInfo()
  }
}